import { Messagetype, plugin, segment } from 'alemon'
import fs from 'fs'

export class pindao extends plugin {
  constructor() {
    super({
      rule: [
        {
          reg: '^/频道列表$',
          fnc: '频道列表'
        }
      ]
    })
  }
  async 频道列表(e: Messagetype) {
    const options = {
      limit: 10, // 每次拉取多少条数据，最大不超过 100，默认 100
      before: '', // 读取此 id 之前的数据
      after: '' // 读取此 id 之后的数据
    }

    try {
      let allChannels = [] // 存储所有频道数据的数组
      let hasMoreData = true // 是否还有更多数据的标志

      while (hasMoreData) {
        const { data } = await client.meApi.meGuilds(options)
        allChannels = allChannels.concat(data) // 将当前页的频道数据添加到总数组中

        if (data.length < options.limit) {
          // 如果当前页数据不满 limit，则表示已经获取完所有数据
          hasMoreData = false
        } else {
          options.after = data[data.length - 1].id // 设置下一页数据的起始ID
        }
      }

      // 将数据写入配置文件
      const configPath = `${process.cwd().replace(/\\/g, '/')}/example/pindao.json`
      const configData = {
        channels: allChannels // 所有频道列表数据
      }
      fs.writeFileSync(configPath, JSON.stringify(configData, null, 2))
    } catch (error) {
      // 错误处理
      console.error(error)
    }

    return false
  }
}
